package redlib.backend.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import redlib.backend.annotation.BackendModule;
import redlib.backend.annotation.NeedNoPrivilege;
import redlib.backend.annotation.Privilege;
import redlib.backend.dto.EssayDTO;
import redlib.backend.dto.query.EssayFullSearchQueryDTO;
import redlib.backend.dto.query.EssayQueryDTO;
import redlib.backend.dto.query.KeywordQueryDTO;
import redlib.backend.model.Page;
import redlib.backend.service.EssayService;
import redlib.backend.vo.EssayVO;
import redlib.backend.vo.LuceneResultBookVO;

import java.util.List;

@RestController
@RequestMapping("/api/essay")
@BackendModule({"page:页面", "update:修改", "add:创建", "delete:删除"})
public class EssayController {
    @Autowired
    private EssayService essayService;

    @PostMapping("listEssay")
    @Privilege("page")
    public Page<EssayVO> listEssay(@RequestBody EssayQueryDTO queryDTO) {
        return essayService.listByPage(queryDTO);
    }

    @PostMapping("addEssay")
    @Privilege("add")
    public Integer addEssay(@RequestBody EssayDTO essayDTO) {
        return essayService.addEssay(essayDTO);
    }

    @PostMapping("updateEssay")
    @Privilege("update")
    public Integer updateEssay(@RequestBody EssayDTO essayDTO) {
        return essayService.updateEssay(essayDTO);
    }

    @PostMapping("deleteEssay")
    @Privilege("delete")
    public void deleteEssay(@RequestBody List<Integer> ids) {
        essayService.deleteByCodes(ids);
    }

    @PostMapping("getEssayByCode")
    @NeedNoPrivilege
    public String getEssayByCode() {
        return "Hello,world";
    }

    @PostMapping("fullSearch")
    @Privilege("page")
    public Page<LuceneResultBookVO> search(@RequestBody EssayFullSearchQueryDTO queryDTO) {
        return essayService.search(queryDTO);
    }
}